package org.fujay.langchain4jserver.domain.application.exception;

import org.fujay.langchain4jserver.domain.application.vo.AppId;

/**
 * 当尝试删除一个仍在使用中的应用（例如，存在活动会话）时抛出此异常。
 */
public class ApplicationInUseException extends RuntimeException { // 或继承自定义业务异常基类

    private static final String MESSAGE_TEMPLATE = "应用 ID [%s] 正在使用中，无法删除。";

    public ApplicationInUseException(AppId appId) {
        super(String.format(MESSAGE_TEMPLATE, appId != null ? appId.value() : "<null>"));
    }

    public ApplicationInUseException(AppId appId, String reason) {
        super(
                String.format(
                        MESSAGE_TEMPLATE + " 原因: %s", appId != null ? appId.value() : "<null>", reason));
    }

    public ApplicationInUseException(AppId appId, Throwable cause) {
        super(String.format(MESSAGE_TEMPLATE, appId != null ? appId.value() : "<null>"), cause);
    }
}
